// 环境切换工具页面
const app = getApp();
const envConfig = require('../../config/env.js');

Page({
  data: {
    currentEnv: '',
    serverUrl: '',
    baseUrl: '',
    environments: ['development', 'testing', 'production'],
    debug: false,
    showDevTools: false,
    // 版本信息
    version: '',
    buildNumber: '',
    // 自定义API地址
    customServerUrl: '',
    customBaseUrl: '',
    isCustom: false
  },
  
  onLoad() {
    this.refreshConfig();
    this.getVersionInfo();
  },
  
  // 刷新配置显示
  refreshConfig() {
    const config = envConfig.getConfig();
    this.setData({
      currentEnv: envConfig.currentEnv,
      serverUrl: config.serverUrl,
      baseUrl: config.baseUrl,
      debug: config.debug,
      showDevTools: config.showDevTools
    });
  },
  
  // 获取版本信息
  getVersionInfo() {
    try {
      const accountInfo = wx.getAccountInfoSync();
      const version = accountInfo.miniProgram.version || '开发版本';
      const envVersion = accountInfo.miniProgram.envVersion;
      
      this.setData({
        version: version,
        buildNumber: this.getBuildLabel(envVersion)
      });
    } catch (e) {
      console.error('获取版本信息失败:', e);
      this.setData({
        version: '未知版本',
        buildNumber: '开发环境'
      });
    }
  },
  
  // 获取版本标签
  getBuildLabel(envVersion) {
    switch(envVersion) {
      case 'develop': return '开发版';
      case 'trial': return '体验版';
      case 'release': return '正式版';
      default: return '未知版本';
    }
  },
  
  // 切换环境
  switchEnvironment(e) {
    const env = e.currentTarget.dataset.env;
    envConfig.setEnv(env);
    
    // 如果有自定义API地址并且是测试环境，则应用自定义地址
    if (this.data.isCustom && env === 'testing') {
      this.applyCustomApiUrls();
    } else {
      // 重新初始化全局数据
      app.initGlobalData();
    }
    
    // 刷新显示
    this.refreshConfig();
    
    wx.showToast({
      title: `已切换到${env}环境`,
      icon: 'success'
    });
  },
  
  // 自定义服务器地址输入
  inputCustomServerUrl(e) {
    this.setData({
      customServerUrl: e.detail.value
    });
  },
  
  // 自定义API基础地址输入
  inputCustomBaseUrl(e) {
    this.setData({
      customBaseUrl: e.detail.value
    });
  },
  
  // 切换自定义模式
  toggleCustomMode() {
    const newIsCustom = !this.data.isCustom;
    this.setData({
      isCustom: newIsCustom
    });
    
    if (newIsCustom && !this.data.customServerUrl) {
      // 如果启用自定义模式但没有自定义地址，则使用当前地址作为默认值
      this.setData({
        customServerUrl: this.data.serverUrl,
        customBaseUrl: this.data.baseUrl
      });
    }
  },
  
  // 应用自定义API地址
  applyCustomApiUrls() {
    if (!this.data.customServerUrl || !this.data.customBaseUrl) {
      wx.showToast({
        title: '请输入完整的API地址',
        icon: 'none'
      });
      return;
    }
    
    // 创建自定义环境配置
    const customConfig = {
      serverUrl: this.data.customServerUrl,
      baseUrl: this.data.customBaseUrl,
      debug: true,
      showDevTools: true
    };
    
    // 应用配置到全局
    app.applyCustomConfig(customConfig);
    
    // 刷新显示
    this.refreshConfig();
    
    wx.showToast({
      title: '已应用自定义API地址',
      icon: 'success'
    });
  },
  
  // 复制服务器地址
  copyServerUrl() {
    wx.setClipboardData({
      data: this.data.serverUrl,
      success: () => {
        wx.showToast({
          title: '已复制服务器地址'
        });
      }
    });
  },
  
  // 复制API基础地址
  copyBaseUrl() {
    wx.setClipboardData({
      data: this.data.baseUrl,
      success: () => {
        wx.showToast({
          title: '已复制API地址'
        });
      }
    });
  },
  
  // 返回
  goBack() {
    wx.navigateBack();
  },
  
  // 重启小程序（仅开发工具有效）
  restartMiniProgram() {
    wx.showModal({
      title: '重启提示',
      content: '切换环境后建议重启小程序以确保配置生效。确定重启吗？',
      success: (res) => {
        if (res.confirm) {
          // 环境配置已在setEnv时自动保存，不需要再次保存
          wx.showToast({
            title: '请手动重启小程序',
            icon: 'none',
            duration: 2000
          });
        }
      }
    });
  },
  
  // 打开调试工具
  openDebugTools() {
    wx.navigateTo({
      url: '/pages/admin/debug'
    });
  }
});